#ifndef LCD_HPP
#define LCD_HPP
#include <stdint.h>
#include <stdbool.h>

namespace device
{
	class lcd
	{
		public:
			
			typedef enum
			{
				COLOR_TYPE_MONOCHROME = 0,	///<单色的
				COLOR_TYPE_COLORFULL,				///<彩色的
			}ColorTypeTPDF;
			
			typedef struct
			{
				uint32_t Red;								///<红
				uint32_t Green;							///<绿
				uint32_t Blue;							///<蓝
			}RGBTPDF;											///<彩色定义
			
			typedef struct
			{
				uint32_t X;
				uint32_t Y;
			}ResolutionTPDF;
			
			typedef struct
			{
				ColorTypeTPDF ColorType;   //> LCD 颜色
				ResolutionTPDF Resolution;  //LCD 分辨率
				uint8_t        Refresh;  ///> LCD 刷新率
			}LcdAttributeTPDF;
			
			virtual const LcdAttributeTPDF* GetLcdAttribute(void);
			virtual void   vSetTick(uint32_t tick);
			virtual uint32_t uiGetTick(void);
			virtual void Reset(void);			
			virtual void Clear(void);
			virtual void DrawHorizontal(uint32_t uiStartX, uint32_t uiStartY, const uint8_t *ucDots, uint32_t Len);
			virtual void DrawHorizontal(uint32_t uiStartX, uint32_t uiStartY, const uint8_t *ucDots, RGBTPDF *tDots, uint32_t Len);
			virtual void DrawVertical(uint32_t uiStartX, uint32_t uiStartY, const uint8_t *ucDots, uint32_t Len);
			virtual void DrawVertical(uint32_t uiStartX, uint32_t uiStartY, const uint8_t *ucDots, RGBTPDF *tDots, uint32_t Len);
	};
}

#endif
